$(document).ready(function(){

    $('#tableOffice').dataTable({
        "bFilter": false,
        "bInfo": false,
        "bServerSide": true,
        "sScrollY": "400px",
        "sAjaxSource": "./getOffice",
        "sServerMethod": "POST",
        "oLanguage": {"sUrl": "./resources/datatables.russian.txt"},
        "aoColumns": [
                        {"mData":"id", bVisible:false },
                        {"mData":"name"},
                        {"mData":"location"},
                        {"mData":"address"},
                        {"mData":"manager"}
        ],
        "fnRowCallback": function(nRow, aData, iDisplayIndex) {
            nRow.onclick = function(e) {

                // активируем кнопки
                activateButtons(true);

                // Подсвечиваем строку на которую кликнул пользователь
                $('#tableOffice tbody tr').removeClass('row_selected');
                $(e.target.parentNode).toggleClass('row_selected');

            };
        }
    });
});

// Обновление данных в таблице
function updateTable(){
    var table = $('#tableOffice').dataTable();
    table.fnDraw();

};

// Активация/деактивация кнопок
function activateButtons(isActivate){
    if(isActivate == true ){
        document.getElementById("editOffice").disabled = false;
        document.getElementById("removeOffice").disabled = false;
    }else{
        document.getElementById("editOffice").disabled = true;
        document.getElementById("removeOffice").disabled = true;
    }
};

// Добавление офиса
function addOffice(){

    // получаем список менеджеров
    $.ajax({
        type: "POST",
        url: "getManagers",
        data: {id: -1},
        "success" : function(data) {
            var arrayTypes = eval(data).values;

            // формируем список менеджеров
            var selectManager;
            for(var i in arrayTypes) {
                selectManager += '<option value="'+arrayTypes[i].id+'">'+arrayTypes[i].name+'</option>\n';
            }

            $.Dialog({
                "title": "Добавление.",
                "draggable": true,
                "padding": 5,
                "height": 360,
                "width": 520,
                "onShow" : function(_dialog){
                    var content =
                                    '<label>Введите название офиса: </label>'+
                                    '<div class="input-control text">' +
                                        '<input type="text" id="newNameOffice" value="">'+
                                        '<button class="btn-clear"></button>'+
                                    '</div>'+

                                    '<label>Введите местоположение офиса: </label>'+
                                    '<div class="input-control text">' +
                                        '<input type="text" id="newLocationOffice" value="">'+
                                        '<button class="btn-clear"></button>'+
                                    '</div>'+

                                    '<label>Введите адрес офиса: </label>'+
                                    '<div class="input-control text">' +
                                        '<input type="text" id="newAddressOffice" value="">'+
                                        '<button class="btn-clear"></button>'+
                                    '</div>'+

                                    '<label>Выберите менеджера.</label>'+
                                    '<select id="newManagerOffice">'+
                                        selectManager+
                                    '</select>'+


                                    '<div class="form-actions" align="right">' +
                                        '<button class="button success" id="buttonAddOffice">Добавить.</button>&nbsp;'+
                                        '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                                    '</div>';

                    $.Dialog.content(content);
                    $.Metro.initInputs();

                    // Обработка нажатия кнопки сохранить
                    $('#buttonAddOffice').on('click', function(){

                        // Новый офис
                        var newNameOffice = $('#newNameOffice').val();
                        var newLocationOffice = $('#newLocationOffice').val();
                        var newAddressOffice = $('#newAddressOffice').val();
                        var newManagerOfficeId = $('#newManagerOffice').val();

                        var check = 1;

                        if((newNameOffice == "") ||(newLocationOffice  == "") || (newAddressOffice  == "") )
                            check = 0;

                        if(check == 1){
                            $.ajax({
                                type: "POST",
                                url:"addOffice",
                                data: {
                                    newNameOffice: newNameOffice,
                                    newLocationOffice: newLocationOffice,
                                    newAddressOffice: newAddressOffice,
                                    newManagerOfficeId: newManagerOfficeId
                                }
                            })
                            .done(function( msg ) {
                                // Обновляем таблицу
                                updateTable();
                            });

                            $.Dialog.close();
                        }else{
                            $.Notify({
                                "content": "Заполните все поля.",
                                "style": {"background": 'darkred', "color": 'white', "font": 'bold'},
                                "timeout": 8000
                            });
                        }
                    });
                }
            });
        }
    });
};

// Удаление офиса
function removeOffice(){

    var table = $('#tableOffice').dataTable();
    var row = table.fnGetData( $('#tableOffice tr.row_selected'))

    var idOffice = row.id;
    var nameOffice = row.name;

    $.Dialog({
        "title": "Удаление.",
        "draggable": true,
        "padding": 5,
        "height": 140,
        "width": 470,
        "onShow" : function(_dialog){

            var content;

            content =   '<label>Вы действиетельно хотите удалить: </label>'+
                        '<label><strong><i>'+nameOffice+'</i></strong></label>'+
                        '<div class="form-actions" align="right">' +
                        '<button class="button danger" id="buttonDelOffice">Удалить.</button>&nbsp;'+
                        '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                        '</div>';

            $.Dialog.content(content);
            $.Metro.initInputs();

            // Обработка нажатия кнопки сохранить
            $('#buttonDelOffice').on('click', function(){
                $.ajax({
                    type: "POST",
                    url:"removeOffice",
                    data: { id: idOffice}
                })
                .done(function( msg ) {
                    activateButtons(false);

                    // Обновляем таблицу подтипов
                    updateTable();
                });
                $.Dialog.close();
            });
        }
    });


};

// Редактирование офиса
function editOffice(){

    var table = $('#tableOffice').dataTable();
    var row = table.fnGetData( $('#tableOffice tr.row_selected'))

    var nameOffice = row.name;
    var locationOffice = row.location;
    var addressOffice = row.address;
    var idOffice = row.id;


    // получаем список менеджеров
    $.ajax({
        type: "POST",
        url: "getManagers",
        data: {id: idOffice},
        "success" : function(data) {
            var arrayTypes = eval(data).values;

            // формируем список менеджеров
            var selectManager;
            for(var i in arrayTypes) {
                selectManager += '<option value="'+arrayTypes[i].id+'">'+arrayTypes[i].name+'</option>\n';
            }

            $.Dialog({
                "title": "Редактирование.",
                "draggable": true,
                "padding": 5,
                "height": 360,
                "width": 520,
                "onShow" : function(_dialog){
                    var content =
                        '<label>Введите название офиса: </label>'+
                            '<div class="input-control text">' +
                            '<input type="text" id="newNameOffice" value="'+nameOffice +'">'+
                            '<button class="btn-clear"></button>'+
                            '</div>'+

                            '<label>Введите местоположение офиса: </label>'+
                            '<div class="input-control text">' +
                            '<input type="text" id="newLocationOffice" value="'+locationOffice+'">'+
                            '<button class="btn-clear"></button>'+
                            '</div>'+

                            '<label>Введите адрес офиса: </label>'+
                            '<div class="input-control text">' +
                            '<input type="text" id="newAddressOffice" value="'+addressOffice+'">'+
                            '<button class="btn-clear"></button>'+
                            '</div>'+

                            '<label>Выберите менеджера.</label>'+
                            '<select id="newManagerOffice">'+
                            selectManager+
                            '</select>'+


                            '<div class="form-actions" align="right">' +
                            '<button class="button success" id="buttonAddOffice">Сохранить.</button>&nbsp;'+
                            '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                            '</div>';

                    $.Dialog.content(content);
                    $.Metro.initInputs();

                    // Обработка нажатия кнопки сохранить
                    $('#buttonAddOffice').on('click', function(){

                        // Новый офис
                        var newNameOffice = $('#newNameOffice').val();
                        var newLocationOffice = $('#newLocationOffice').val();
                        var newAddressOffice = $('#newAddressOffice').val();
                        var newManagerOfficeId = $('#newManagerOffice').val();

                        if((newNameOffice == "") ||(newLocationOffice  == "") || (newAddressOffice  == "") )
                            check = 0;

                        if(check == 1){
                            $.ajax({
                                type: "POST",
                                url:"editOfficeInf",
                                data: {
                                    id: idOffice,
                                    newNameOffice: newNameOffice,
                                    newLocationOffice: newLocationOffice,
                                    newAddressOffice: newAddressOffice,
                                    newManagerOfficeId: newManagerOfficeId
                                }
                            })
                            .done(function( msg ) {
                                // Обновляем таблицу
                                updateTable();
                            });

                            $.Dialog.close();
                        }else{
                            $.Notify({
                                "content": "Заполните все поля.",
                                "style": {"background": 'darkred', "color": 'white', "font": 'bold'},
                                "timeout": 8000
                            });
                        }
                    });
                }
            });
        }
    });
};
